<!doctype html>
<!--
Copyright 2018 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<html>
<script>
let done = false;
let index;
let numberOfWorkers;
let closeWorker;
let allocationsPerWorker;

function spawnWorker() {
  if (index === numberOfWorkers) {
    done = true;
    document.getElementById("counter").innerHTML = "Done";
    return;
  }
  let worker = new Worker("worker.js");
  worker.postMessage({
    index: index,
    closeWorker: closeWorker,
    allocationsPerWorker: allocationsPerWorker});
  document.getElementById("counter").innerHTML =
      "Spawned " + index + " workers.";
  ++index;
  worker.onmessage = spawnWorker;
}

function go() {
  index = 0;
  numberOfWorkers = parseInt(document.getElementById("numberOfWorkers").value);
  closeWorker = document.getElementById("closeWorker").checked;
  allocationsPerWorker =
      parseInt(document.getElementById("allocationsPerWorker").value) *
      1024 * 1024;
  spawnWorker();
}

function onLoad() {
  let url = window.document.URL;
  let workers = url.match(/workers=(\d+)/);
  if (workers) {
    document.getElementById("numberOfWorkers").value = workers[1];
  }
  let allocations = url.match(/allocations=(\d+)/);
  if (allocations) {
    document.getElementById("allocationsPerWorker").value = allocations[1];
  }
  if (url.indexOf("close=0") >= 0) {
    document.getElementById("closeWorker").checked = false;
  }
  if (url.indexOf("auto=1") >= 0) {
    go();
  }
}

</script>
<body onload="onLoad()">
  <div>
    Number of workers:
    <input type="text" id="numberOfWorkers" value="1000" size="3"></input>
  </div>
  <div>
    Allocations per worker in MB:
    <input type="text" id="allocationsPerWorker" value="5" size="3"></input>
  </div>
  <div>
    <input type="checkbox" id="closeWorker" checked>
    Call <b>close()</b> on Worker
  </div>
  <div>
  <button onclick="go()">Go</button>
  </div>
  <p id="counter"></p>
</body>
</html>
